#include "Application.h"






/*Enregistre  des   logins   de  test    dans    la  base    de  donnée                                                      */
void    test()
{


    int i, j;

    Etu*etu;
    UE*ue;


    /*ajouter Salle*/
    for(j=1;j<11;j++)
    {
        Salle * salle;
        char intitule[50];
        sprintf(intitule, "%s%d", "Themis ", j);
        salle=creSalle(j, intitule);
        saveSalle(salle);
        detSalle(&salle);
    }


    /*ajouter UE*/
    for(j=1;j<5;j++)
    {
        char intitule[50];
        sprintf(intitule, "%s%d", "LIF", j);
        savUEParElem(j, intitule, j);
    }
    /*ajouter Etudiant et login des etudiant et inscrire des etudiants*/
    for(i=1000;i<1020;i++)
    {
        char nometu[50], prenometu[50], mdp[50];
        sprintf(nometu, "%s%d", "nomEtu", i);
        sprintf(prenometu, "%s%d", "prenomEtu", i);
        etu =creEtu(i,nometu,prenometu);
        savEtu(etu);

        sprintf(mdp,"%d", i);
        Login*log=creLogin(mdp, mdp, 1);
        savLog(log);
        detLog(&log);

        for(j=1;j<5;j++)
        {
            char intitule[50];
            sprintf(intitule, "%s%d", "LIF", j);
            ue = creUE(j, intitule, j);
            inscrireEtudiantUe(etu, ue, 2011,'1');
            detUE(&ue);
        }
        detEtu(&etu);
    }
    /*ajouter des enseignant et ses lgin*/
    for(i=2000;i<2010;i++)
    {
        char nomens[50], prenomens[50], mdp[50];
        sprintf(nomens, "%s%d", "nomEns", i);
        sprintf(prenomens, "%s%d", "prenomEns", i);
        savEnsParElem(i, nomens, prenomens);
        sprintf(mdp, "%d", i);
        Login * log=creLogin(mdp, mdp, 2);
        savLog(log);
        detLog(&log);
    }




    Etu*etu1=creEtu(10700880,"Roumane","Salah");
    Etu*etu2=creEtu(1070081,"Nourzadet","Omid");
    Etu*etu3=creEtu(1109110,"Slimani","Lotfi");
    Etu*etu4=creEtu(1070054,"jean","Rémi");
    Etu*etu5=creEtu(1070120,"claude","moulin");
    Etu*etu6=creEtu(1070021,"Nathalie","Bernard");
    Etu*etu7=creEtu(1070089,"Cathrine","Jeans");
    Etu*etu8=creEtu(1070099,"kamil","Path");
    Etu*etu9=creEtu(1070120,"Steph","Bruno");
    Etu*etu10=creEtu(1070026,"Bruno","Borne");
    Etu*etu11=creEtu(1070077,"Sami","Grinar");
    Etu*etu12=creEtu(1070065,"Claude","Sephon");
    Etu*etu13=creEtu(1070023,"Emile","Rome");
    Etu*etu14=creEtu(1070063,"Romain","Break");
    Etu*etu15=creEtu(1070096,"Gofray","Truc");
    Etu*etu16=creEtu(1070012,"Alexandre","Botin");
    Etu*etu17=creEtu(1070200,"Adrien","Steph");
    Etu*etu18=creEtu(1070126,"Ali","Jean");
    Etu*etu19=creEtu(1070228,"Morvan","Adrien");
    Etu*etu20=creEtu(10584512,"Malkovitch","John");

    Login*log1=creLogin("10700880","84982",1);
    Login*log2=creLogin("1070081","Nourzadet",1);
    Login*log3=creLogin("1109110","Slimani",1);
    Login*log4=creLogin("1070054","jean",1);
    Login*log5=creLogin("1070120","claude",1);
    Login*log6=creLogin("1070021","Nathalie",1);
    Login*log7=creLogin("1070089","Cathrine",1);
    Login*log8=creLogin("1070099","kamil",1);
    Login*log9=creLogin("1070120","Steph",1);
    Login*log10=creLogin("1070026","Bruno",1);
    Login*log11=creLogin("1070077","Sami",1);
    Login*log12=creLogin("1070065","Claude",1);
    Login*log13=creLogin("1070023","Emile",1);
    Login*log14=creLogin("1070063","Romain",1);
    Login*log15=creLogin("1070096","Gofray",1);
    Login*log16=creLogin("1070012","Alexandre",1);
    Login*log17=creLogin("1070200","Adrien",1);
    Login*log18=creLogin("1070126","Ali",1);
    Login*log19=creLogin("1070228","Morvan",1);
    Login*log20=creLogin("10584512","Malkovitch",1);



    UE*ue1=creUE(1,"LIF7",3);
    UE*ue2=creUE(2,"LIF6",2);
    UE*ue3=creUE(3,"LIF3",1);
    UE*ue4=creUE(4,"LIF2",5);
    UE*ue5=creUE(5,"LIF1",4);
    UE*ue6=creUE(6,"LIF5",5);
    UE*ue7=creUE(7,"LIF8",2);
    UE*ue8=creUE(8,"LIF9",2);
    UE*ue9=creUE(9,"LIF12",3);
    UE*ue10=creUE(10,"LIF13",4);
    UE*ue11=creUE(11,"LIF4",2);
    UE*ue12=creUE(12,"LIF40",3);
    UE*ue13=creUE(13,"LIF41",1);
    UE*ue14=creUE(14,"LIF42",2);
    UE*ue15=creUE(15,"LIF45",2);
    UE*ue16=creUE(16,"LIF33",4);
    UE*ue17=creUE(17,"LIF31",5);
    UE*ue18=creUE(18,"LIF37",1);



    IP*ip1=creIP(1,1,10700880,2012,'2','X');
    IP*ip2=creIP(2,2,10700880,2012,'2','X');
    IP*ip4=creIP(4,2,1070054,2012,'2','X');
    IP*ip5=creIP(5,3,10700880,2012,'2','X');
    IP*ip6=creIP(6,2,1070021,2012,'2','X');
    IP*ip7=creIP(7,4,10700880,2012,'2','X');
    IP*ip8=creIP(8,5,10700880,2012,'2','X');
    IP*ip9=creIP(9,1,1070120,2012,'2','X');
    IP*ip10=creIP(10,4,1070026,2012,'2','X');
    IP*ip11=creIP(11,3,1070077,2012,'2','X');
    IP*ip12=creIP(12,2,1070065,2012,'2','X');
    IP*ip13=creIP(13,1,1070023,2012,'2','X');
    IP*ip14=creIP(14,2,1070063,2012,'2','X');
    IP*ip15=creIP(15,3,10584512,2012,'2','X');
    IP*ip16=creIP(16,5,10584512,2012,'2','X');
    IP*ip17=creIP(17,4,10584512,2012,'2','X');
    IP*ip18=creIP(18,2,10584512,2012,'2','X');
    IP*ip19=creIP(19,4,10584512,2012,'2','X');
    IP*ip20=creIP(20,1,10584512,2012,'2','X');



    ajouterEtu(etu1);
    ajouterEtu(etu2);
    ajouterEtu(etu3);
    ajouterEtu(etu4);
    ajouterEtu(etu5);
    ajouterEtu(etu6);
    ajouterEtu(etu7);
    ajouterEtu(etu8);
    ajouterEtu(etu9);
    ajouterEtu(etu10);
    ajouterEtu(etu11);
    ajouterEtu(etu12);
    ajouterEtu(etu13);
    ajouterEtu(etu14);
    ajouterEtu(etu15);
    ajouterEtu(etu16);
    ajouterEtu(etu17);
    ajouterEtu(etu18);
    ajouterEtu(etu19);
    ajouterEtu(etu20);

    ajouterLogin(log1);
    ajouterLogin(log2);
    ajouterLogin(log3);
    ajouterLogin(log4);
    ajouterLogin(log5);
    ajouterLogin(log6);
    ajouterLogin(log7);
    ajouterLogin(log8);
    ajouterLogin(log9);
    ajouterLogin(log10);
    ajouterLogin(log11);
    ajouterLogin(log12);
    ajouterLogin(log13);
    ajouterLogin(log14);
    ajouterLogin(log15);
    ajouterLogin(log16);
    ajouterLogin(log17);
    ajouterLogin(log18);
    ajouterLogin(log19);
    ajouterLogin(log20);




    Ens  *ens=recEnsParCode(1);
    ajouterEnseigne(ens,ue1,1,0,0);
    ajouterEnseigne(ens,ue2,1,1,1);
    ajouterEnseigne(ens,ue3,0,1,1);
    detEns(&ens);



    ajouterUE(ue1);
    ajouterUE(ue2);
    ajouterUE(ue3);
    ajouterUE(ue4);
    ajouterUE(ue5);
    ajouterUE(ue6);
    ajouterUE(ue7);
    ajouterUE(ue8);
    ajouterUE(ue9);
    ajouterUE(ue10);
    ajouterUE(ue11);
    ajouterUE(ue12);
    ajouterUE(ue13);
    ajouterUE(ue14);
    ajouterUE(ue15);
    ajouterUE(ue16);
    ajouterUE(ue17);
    ajouterUE(ue18);

    ajouterIp(ip1);
    ajouterIp(ip2);
    ajouterIp(ip4);
    ajouterIp(ip5);
    ajouterIp(ip6);
    ajouterIp(ip7);
    ajouterIp(ip8);
    ajouterIp(ip9);
    ajouterIp(ip6);
    ajouterIp(ip10);
    ajouterIp(ip11);
    ajouterIp(ip12);
    ajouterIp(ip13);
    ajouterIp(ip14);
    ajouterIp(ip15);
    ajouterIp(ip16);
    ajouterIp(ip17);
    ajouterIp(ip18);
    ajouterIp(ip19);
    ajouterIp(ip20);



    detEtu(&etu1);
    detEtu(&etu2);
    detEtu(&etu3);
    detEtu(&etu4);
    detEtu(&etu5);
    detEtu(&etu6);
    detEtu(&etu7);
    detEtu(&etu8);
    detEtu(&etu9);
    detEtu(&etu10);
    detEtu(&etu11);
    detEtu(&etu12);
    detEtu(&etu13);
    detEtu(&etu14);
    detEtu(&etu15);
    detEtu(&etu16);
    detEtu(&etu17);
    detEtu(&etu18);
    detEtu(&etu19);
    detEtu(&etu20);

    detLog(&log1);
    detLog(&log2);
    detLog(&log3);
    detLog(&log4);
    detLog(&log5);
    detLog(&log6);
    detLog(&log7);
    detLog(&log8);
    detLog(&log9);
    detLog(&log10);
    detLog(&log11);
    detLog(&log12);
    detLog(&log13);
    detLog(&log14);
    detLog(&log15);
    detLog(&log16);
    detLog(&log17);
    detLog(&log18);
    detLog(&log19);
    detLog(&log20);




    detUE(&ue1);
    detUE(&ue2);
    detUE(&ue3);
    detUE(&ue4);
    detUE(&ue5);
    detUE(&ue6);
    detUE(&ue7);
    detUE(&ue8);
    detUE(&ue9);
    detUE(&ue10);
    detUE(&ue11);
    detUE(&ue12);
    detUE(&ue13);
    detUE(&ue14);
    detUE(&ue15);
    detUE(&ue16);
    detUE(&ue17);
    detUE(&ue18);


    detIP(&ip1);
    detIP(&ip2);
    detIP(&ip4);
    detIP(&ip5);
    detIP(&ip6);
    detIP(&ip7);
    detIP(&ip8);
    detIP(&ip9);
    detIP(&ip10);
    detIP(&ip11);
    detIP(&ip12);
    detIP(&ip13);
    detIP(&ip14);
    detIP(&ip15);
    detIP(&ip16);
    detIP(&ip17);
    detIP(&ip18);
    detIP(&ip19);
    detIP(&ip20);

    affIP_DB();
}





/** @brief recupererEtudiantUe
 *
 * @todo: document this function
 */
TabEtu* recupererEtudiantUe(UE*ue)
{
    assert(ue!=NULL);
    assert(ue->codeUE>0);
    TabEtu* tabEtu=recEtuInscritParUe(ue);
    if(tabEtu!=NULL)
    {
        return  tabEtu;
    }
    printf("Une erreur s'est produite ou aucun  etudiant n'est inscrit à cette UE!!\n");
    return  NULL;
}

/** @brief recuperEnseignantUe
  *
  * @todo: document this function
  */
TabEnseignant* recuperEnseignantUe(UE*ue)
{
    assert(ue!=NULL);
    assert(ue->codeUE>0);
    TabEnseignant   *tabEns=recEnseignantParUe(ue);
    if(tabEns!=NULL)
    {
        return  tabEns;
    }
    printf("Une erreur s'est produite ou aucun enseignant n'est lié avec cette UE\n");
    return NULL;
}

/** @brief recupererUeEnseignee
  *
  * @todo: document this function
  */
TabUe* recupererUeEnseignee(Ens*ens)
{
    assert(ens!=NULL);
    assert(ens->numEns>0);
    TabUe  *tabUe=  recUeEnseigne(ens);
    if(tabUe!=NULL)
    {
        return  tabUe;
    }
    printf("Erreur lors de la recuperation des UE enseigné  par l'enseignant %d %s  %s\n",ens->numEns,ens->nomEns,ens->prenomEns);
    return  NULL;
}

/** @brief desinscrireEtudiantUe
  *
  * @todo: document this function
  */
int desinscrireEtudiantUe(Etu*etu,UE*ue)
{
    assert(etu!=NULL    &&  ue!=NULL);
    assert(etu->numEtu>0);
    assert(ue->codeUE);
    IP*ip=recIpParCodeUeNumEtu(etu->numEtu,ue->codeUE);
    return  supIp(ip);
}

/** @brief inscrireEtudiantUe
  *
  * @todo: document this function
  */
int inscrireEtudiantUe(Etu*etu,UE*ue,int    annee,char    semestre)
{
    assert(etu!=NULL    &&  ue!=NULL);
    assert(etu->numEtu>0);
    assert(ue->codeUE);
    int codeIp=getNewCodeIp(IP_DB);
    IP*ip=creIP(codeIp,ue->codeUE,etu->numEtu,annee,semestre,'X');
    if(ip!=NULL)
    {
        saveIp(ip);
        return  0;
    }
    return  -1;
}

/** @brief modifierUE
  *
  * @todo: document this function
  */
int modifierUE(UE*ue,UE*uenew)
{
    return  mdfUE(ue,uenew);
}

/** @brief modifierLgin
  *
  * @todo: document this function
  */
int modifierLgin(Login*log,Login*lognew)
{
    return  modifLogin(log,lognew);
}

/** @brief modifierEnseignant
  *
  * @todo: document this function
  */
int modifierEnseignant(Ens*ens,Ens*ensnew)
{
    return  modifEns(ens,ensnew);
}

/** @brief modifierEtudiant
  *
  * @todo: document this function
  */
int modifierEtudiant(Etu*etu,Etu*etunew)
{
    return  modifEtu(etu,etunew);
}


/** @brief modifierEnseigne
  *
  * @todo: document this function
  */
int modifierEnseigne(Ens*enseignant,UE*ue,int ensCM,int ensTD,int ensTP)
{
    return  modifEnseigne(enseignant,ue,ensCM,ensTD,ensTP);
}


/** @brief suprimerEnseigne
  *
  * @todo: document this function
  */
int suprimerEnseigne(Enseigne*enseigne)
{
    return  supEnseigne(enseigne);
}

/** @brief supprimerUE
  *
  * @todo: document this function
  */
int supprimerUE(UE*ue)
{
    return  supUE(ue);
}

/** @brief supprimerEnseignant
  *
  * @todo: document this function
  */
int supprimerEnseignant(Ens*ens)
{
    return  supEns(ens);
}

/** @brief supprimerEtudiant
  *
  * @todo: document this function
  */
int supprimerEtudiant(Etu*etu)
{
    return  supEtu(etu);
}

/** @brief supprimerLogin
  *
  * @todo: document this function
  */
int supprimerLogin(Login*login)
{
    return supLog(login);
}

/** @brief ajouterIp
  *
  * @todo: document this function
  */
void ajouterIp(IP*ip)
{
    saveIp(ip);
}

/** @brief ajouterEnseigne
  *
  * @todo: document this function
  */
void ajouterEnseigne(Ens*enseignant,UE*ue,int ensCM,int ensTD,int ensTP)
{
    saveEnseignePourUe(enseignant,ue,ensCM,ensTD,ensTP);
}

/** @brief ajouterUE
  *
  * @todo: document this function
  */
void ajouterUE(UE*ue)
{
    savUE(ue);
}

/** @brief ajouterEns
  *
  * @todo: document this function
  */
void ajouterEns(Ens*enseignant)
{
    savEns(enseignant);
}

/** @brief ajouterEtu
  *
  * @todo: document this function
  */
void ajouterEtu(Etu*etu)
{
    savEtu(etu);

}

/** @brief ajouterLogin
  *
  * @todo: document this function
  */
void ajouterLogin(Login*log)
{
    savLog(log);
}






/** @brief affecterEtudiantAGroupe
  *
  * @todo: document this function
  */
int affecterEtudiantAGroupe(Etu*etu,UE*ue,char c)
{
    assert(etu!=NULL    &&  ue!=NULL);
    IP*ip=recIpParCodeUeNumEtu(getNumEtu(etu),getCodeUE(ue));
    setGroupe(ip,c);
    modifierIp(ip,ip);

    return  0;
}

/** @brief affectationAutomatiqueEtudiantGroupe
  *
  * @todo: document this function
  */
int affectationAutomatiqueEtudiantGroupe(UE*ue,int nbGroupe)
{
    assert(ue!=NULL);
    assert(nbGroupe>0);
    return  definitAutomatiquementGroupe(ue,nbGroupe);
}





/** @brief precenseEtudiantAEnseignemet
  *
  * @todo: document this function
  */
void precenseEtudiantAEnseignemet(Etu*etu,Enseignement*enseignement,char* etat)
{
    setPresenceEtuAEnseignement(etu,enseignement,etat);
}

/** @brief affecterRespAUe
  *
  * @todo: document this function
  */
void affecterRespAUe(Ens*ens,UE*ue)
{
    setResponsableToUe(ens,ue);
}










/****************************************************************************************************************************/

